<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>parser::write_some (3 of 6 overloads)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../../index.html" title="Chapter 1. Boost.JSON">
<link rel="up" href="../write_some.html" title="parser::write_some">
<link rel="prev" href="overload2.html" title="parser::write_some (2 of 6 overloads)">
<link rel="next" href="overload4.html" title="parser::write_some (4 of 6 overloads)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="overload2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../write_some.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="overload4.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h6 class="title">
<a name="json.ref.boost__json__parser.write_some.overload3"></a><a class="link" href="overload3.html" title="parser::write_some (3 of 6 overloads)">parser::write_some
          (3 of 6 overloads)</a>
</h6></div></div></div>
<p>
            Parse a buffer containing a complete JSON.
          </p>
<h7><a name="json.ref.boost__json__parser.write_some.overload3.h0"></a>
            <span class="phrase"><a name="json.ref.boost__json__parser.write_some.overload3.synopsis"></a></span><a class="link" href="overload3.html#json.ref.boost__json__parser.write_some.overload3.synopsis">Synopsis</a>
          </h7><pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
<span class="identifier">write_some</span><span class="special">(</span>
    <span class="identifier">string_view</span> <span class="identifier">s</span><span class="special">,</span>
    <span class="identifier">error_code</span><span class="special">&amp;</span> <span class="identifier">ec</span><span class="special">);</span>
</pre>
<h7><a name="json.ref.boost__json__parser.write_some.overload3.h1"></a>
            <span class="phrase"><a name="json.ref.boost__json__parser.write_some.overload3.description"></a></span><a class="link" href="overload3.html#json.ref.boost__json__parser.write_some.overload3.description">Description</a>
          </h7><p>
            This function parses a complete JSON contained in the specified character
            buffer. Additional characters past the end of the complete JSON are ignored.
            The function returns the actual number of characters parsed, which may
            be less than the size of the input. This allows parsing of a buffer containing
            multiple individual JSONs or containing different protocol data:
          </p>
<h7><a name="json.ref.boost__json__parser.write_some.overload3.h2"></a>
            <span class="phrase"><a name="json.ref.boost__json__parser.write_some.overload3.example"></a></span><a class="link" href="overload3.html#json.ref.boost__json__parser.write_some.overload3.example">Example</a>
          </h7><pre class="programlisting"><span class="identifier">parser</span> <span class="identifier">p</span><span class="special">;</span>                                       <span class="comment">// construct a parser</span>
<span class="identifier">size_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">write_some</span><span class="special">(</span> <span class="string">"[1,2,3] null"</span> <span class="special">);</span>      <span class="comment">// parse a complete JSON</span>
<span class="identifier">assert</span><span class="special">(</span> <span class="identifier">n</span> <span class="special">==</span> <span class="number">8</span> <span class="special">);</span>                               <span class="comment">// only some characters consumed</span>
<span class="identifier">value</span> <span class="identifier">jv</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">release</span><span class="special">();</span>                         <span class="comment">// take ownership of the value</span>
</pre>
<h7><a name="json.ref.boost__json__parser.write_some.overload3.h3"></a>
            <span class="phrase"><a name="json.ref.boost__json__parser.write_some.overload3.complexity"></a></span><a class="link" href="overload3.html#json.ref.boost__json__parser.write_some.overload3.complexity">Complexity</a>
          </h7><p>
            Linear in <code class="computeroutput"><span class="identifier">size</span></code>.
          </p>
<h7><a name="json.ref.boost__json__parser.write_some.overload3.h4"></a>
            <span class="phrase"><a name="json.ref.boost__json__parser.write_some.overload3.exception_safety"></a></span><a class="link" href="overload3.html#json.ref.boost__json__parser.write_some.overload3.exception_safety">Exception
            Safety</a>
          </h7><p>
            Basic guarantee. Calls to <code class="computeroutput"><span class="identifier">memory_resource</span><span class="special">::</span><span class="identifier">allocate</span></code>
            may throw. Upon error or exception, subsequent calls will fail until
            <a class="link" href="../reset.html" title="parser::reset"><code class="computeroutput"><span class="identifier">reset</span></code></a>
            is called to parse a new JSON.
          </p>
<h7><a name="json.ref.boost__json__parser.write_some.overload3.h5"></a>
            <span class="phrase"><a name="json.ref.boost__json__parser.write_some.overload3.return_value"></a></span><a class="link" href="overload3.html#json.ref.boost__json__parser.write_some.overload3.return_value">Return
            Value</a>
          </h7><p>
            The number of characters consumed from the buffer.
          </p>
<h7><a name="json.ref.boost__json__parser.write_some.overload3.h6"></a>
            <span class="phrase"><a name="json.ref.boost__json__parser.write_some.overload3.parameters"></a></span><a class="link" href="overload3.html#json.ref.boost__json__parser.write_some.overload3.parameters">Parameters</a>
          </h7><div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                    <p>
                      Name
                    </p>
                  </th>
<th>
                    <p>
                      Description
                    </p>
                  </th>
</tr></thead>
<tbody>
<tr>
<td>
                    <p>
                      <code class="computeroutput"><span class="identifier">s</span></code>
                    </p>
                  </td>
<td>
                    <p>
                      The character string to parse.
                    </p>
                  </td>
</tr>
<tr>
<td>
                    <p>
                      <code class="computeroutput"><span class="identifier">ec</span></code>
                    </p>
                  </td>
<td>
                    <p>
                      Set to the error, if any occurred.
                    </p>
                  </td>
</tr>
</tbody>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2019, 2020 Vinnie Falco<br>Copyright © 2020 Krystian Stasiowski<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="overload2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../write_some.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="overload4.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
